package net.cyue.ort.llm;

import net.cyue.ort.llm.config.ModelConfig;
import net.cyue.ort.llm.data.ModelInput;
import net.cyue.ort.llm.data.ModelOutput;

/**
 * 模型适配器接口
 * 负责模型推理的抽象层，实现依赖倒置原则
 * 支持不同的模型后端（ONNX、TensorFlow等）
 */
public interface ModelAdapter extends AutoCloseable {
    /**
     * 执行模型推理
     * @param input 模型输入
     * @return 模型输出
     * @throws ModelException 推理失败时抛出
     */
    ModelOutput runInference(ModelInput input) throws ModelException;
    
    /**
     * 获取模型配置
     * @return 模型配置
     */
    ModelConfig getConfig();
    
    /**
     * 验证模型是否可用
     * @return 是否可用
     */
    default boolean isValid() {
        try {
            return getConfig() != null;
        } catch (Exception e) {
            return false;
        }
    }
    
    @Override
    void close();
}

